package com.itheima.d6_synchronized_lock;

import com.itheima.d4_synchronized_code.Ticket;

/**
 * 目标：模拟线程安全问题。
 * synchronized锁对象：锁对象，锁对象必须唯一，否则无法锁到。
 * Lock 锁对象：锁对象可以不唯一，但是必须保证唯一性。
 * synchronized 和 Lock 的区别
 * synchronized JVM级别的 自动抢锁自动释放锁 如果有异常 自动释放锁 悲观锁
 * Lock         API级别的 手动抢锁手动释放锁 如果有异常 不会自动释放锁 乐观锁
 */
public class ThreadTest {
    public static void main(String[] args) {
        Ticket ticket = new Ticket();
        Thread thread1 = new Thread(ticket, "窗口一");
        Thread thread2 = new Thread(ticket, "窗口二");
        Thread thread3 = new Thread(ticket, "窗口三");
        thread1.start();
        thread2.start();
        thread3.start();

    }

}


